Definition of terms used in this discussion, Complex Event Processing (CEP) and CEP Engines, are described below.
CEP is an event processing concept that processes multiple events of an event stream with the goal of identifying the meaningful events within the event stream. CEP employs techniques such as detection of complex patterns of many events, event correlation and abstraction, event hierarchies, and relationships between events such as causality, membership, and timing, and event-driven processes.
A Complex Event Processing Engine is a process executing in a program space that consumes event streams for the purpose of performing the objectives of CEP as described above. Examples of Open Source CEP Engines are Esper (http://esper.codehaus.org/) while commercially available CEP Engines are available from StreamBase (http://www.streambase.com/complex-event-processing.htm), and Progress Apama (http://www.progress.com/apama/products/apama_esp/index.ssp).
Simply by sheer volume of data, Event Streams from either a single or multiple of event sources can out strip the capacity of a CEP Engine. This creates a bottle neck in two areas, processing and networking. Processing capacity can only be elevated (even if only temporarily) by running the CEP Engine in a processor of greater capacity. Additional bottlenecks occur when managing event streams originating from multiple sources across a network. This puts great load on the network to transport the event streams to the CEP Engine that can consume large amounts of network bandwidth.
The CPU capacity bottleneck scales with advances of integrated circuit technology to deliver faster CPU chips and the financial budget available to continually upgrade to these new more powerful compute servers. The network bandwidth bottleneck has no such path to expansion. Unlike integrated circuit technology, network technologies do not advance in accordance with Moore's Law. And networking infrastructures are very costly and not so easily upgraded.
This puts a hard ceiling for CEP capacity and limits the use of this technology thus eliminating entire classes of applications that can benefit from it.
This invention describes engineering techniques and methodology that establishes a “Cloud” or “Virtual” CEP Engine that vastly extends the capacity and scope of the CEP Engine without consuming large amounts network bandwidth.
To date the solution to CEP Engine Capacity is to run these engines on exotic hardware platforms that enable the process to consume and evaluate larger event streams.
Listed below are 2 U.S. Pat. Nos. 7,243,124 and 7,272,660 both submitted by Oracle and are very close to each other in concept. Each describes methods for sharing the load for evaluating “components” of a rule across multiple CEP Engines as managed by a central manager. This is a very different method described with in this patent.
In the U.S. Pat. Nos. 7,243,124 and 7,272,660 a hub and spoke model is used with a single manager sharing its load with “helper” CEP Engines. The central manager is a single point of consumption of input data streams as well as the final correlation of events processed by its satellite CEP Engines. Therefore this method scales with the ability of the central CEP Manager to scale, ultimately the same techniques as current CEP Engines running it on a larger capacity server.
For completeness, prior patents discuss enhancing CEP performance is listed below. However, none of these are directly applicable to networking CEP Engines as described with in this patent. These are: Method and system for managing events (U.S. Pat. No. 7,289,988), Architecture for general purpose near real-time business intelligence system with client devices and methods (U.S. Pat. No. 7,243,124), and Architecture for general purpose near real-time business intelligence system and methods (U.S. Pat. No. 7,272,660)
The other solutions identified, all scale to the hard limit of: Processing power of the hardware (CPU Server) the CEP Engine is running on, and the internal processing efficiency of the CEP Engine software algorithms.
Advances in these respective areas can raise the limit; however it is still a hard limit that can not scale beyond the single running instance of a CEP Engine.
The invention put forth within is a method that opens the CEP scaling ceiling to the approximate cumulative limits of the individual CEP Engines running across the network. The resulting CEP Cloud has a limit defined in the following two fundamental ways. First and foremost, expanding the network of CEP Engines raises the overall processing limit.
Second are the advances available to each individual CEP Engine in the CEP Cloud. This is identical to that of the current solutions, advances in the processing power of the CPU and CEP internal processing algorithm. As each individual CEP Engine in the CEP Cloud increases in processing capability the Cloud processing capacity increases in proportion.
It is an object of the invention to create a CEP Cloud whose processing limits are solely bound by the number of CEP engines participating in the network of CEP engines that make up the CEP Cloud.
It is another object of the invention to establish CEP Services that perform specific end-user function. CEP Services are logical entities defined by function whose physical composition are any number of CEP Engines in the CEP Cloud.
It is another object of the invention to establish communication protocol of Event Streams that CEP Services interface to other CEP Services and external systems of the CEP Cloud.
It is another object of the invention to establish Event Stream relationships that are naturally formed as native event streams and derived event streams.
It is another object of the invention to establish CEP State Actions that are produced by CEP Services so to affect state of other CEP Services in the CEP Cloud as well as systems external to the CEP Cloud.